package com.gitee.feizns.quickstart.web.restful.listener;

/**
 * REST api 侦听器
 * @author feizns
 * @since 2024/12/25
 */
public interface RestListener<T> {

    /**
     * 创建前
     * @param entity 实体
     * @return {@link T}
     */
    default T beforeCreate(T entity) {
        return entity;
    }

    /**
     * 创建前
     * @param entity 实体
     */
    default T created(T entity) {
        return entity;
    }

    /**
     * 根据编号修改之前
     * @param entity 实体
     * @return {@link T}
     */
    default T beforeUpdateById(T entity) {
        return entity;
    }

    /**
     * 根据编号修改之后
     * @param entity 实体
     */
    default T updatedById(T entity) {
        return entity;
    }

    /**
     * 批量修改之前
     * @param conditional 删除条件
     */
    default void beforeUpdate(Object conditional) {}

    /**
     * 删除前
     * @param entity 实体
     * @return {@link T}
     */
    default T beforeDeleteById(T entity) {
        return entity;
    }

    /**
     * 删除后
     * @param entity 实体
     */
    default T deletedById(T entity) {
        return entity;
    }

    /**
     * 删除
     * @param conditional 删除条件
     */
    default void beforeDelete(Object conditional) {}

}
